package 算法.NiuKe.JZ;


/**
 * @author: 谢君臣
 * @create: 2020-12-12 16:34
 * @founction: XXXX
 * 请实现一个函数，将一个字符串中的每个空格替换成“%20”。
 * 例如，当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
 */
public class Jz2 {
    public static void main(String[] args) {
        StringBuffer str = new StringBuffer("We Are Happy.");
        /**
         * 方法一
         */
        char[] chars = str.toString().toCharArray();
        int k = 0;
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] == ' ') {
                str = str.replace(i + k * 2, i + k * 2 + 1, "%20");
                k++;
            }
        }
//        return str;
        /**
         * 方法二
         */
        String newstr = str.toString().replace(" ","%20");
        System.out.println(str.toString());

    }
    /**
     * 本题考查 string 、stringBuilder、stringBuffer ;
     *    string :长度是不变的,所有每次 replace 是 jvm 都会在系统中创建一个新的字符串
     *            所以直接用转换成string 底层Jvm 会创建多个string变量；
     *            底层： StringBuilder result = new StringBuilder();
     *                   result.append(text, start(refNum), end(refNum));
     *    StringBuilder 和 stringBuffer 都是可变的，所以Jvm底层不会创建新的变量；
     *          str = str.replace(start,end,str);
     *          System.arraycopy(value, end, value, start + len, count - end);
     */

}
